5.2.8 shim

本章中的部分图片展示了shim组件。

shim是实现无daemon的容器(如5.2.7节所述,用于将运行中的容器与daemon解耦,以便进行daemon升级等操作)不可或缺的工具。

前面提到,containerd指挥runc来创建新容器。事实上,每次创建容器时它都会fork一个新的runc实例。不过,一旦容器创建完毕,对应的runc进程就会退出。因此,即使运行上百个容器,也无须保持上百个运行中的runc实例。

一旦容器进程的父进程runc退出,相关联的containerd-shim进程就会成为容器的父进程。作为容器的父进程,shim的部分职责如下。

  • 保持所有STDIN和STDOUT流是开启状态,从而当daemon重启的时候,容器不会因为管道(pipe)的关闭而终止。
  • 将容器的退出状态反馈给daemon。

results matching ""

    No results matching ""